【shell 基础13】输入输出与重定向 您所在的位置:网站首页 重定向输入流 到另一个进程 【shell 基础13】输入输出与重定向

【shell 基础13】输入输出与重定向

2023-06-12 10:45| 来源: 网络整理| 查看: 265

文章目录 一. 标准输入和标准输出二、重定向1. 定义2. 输出的重定向3. 对标准错误输出重定向4. 输入的重定向

一. 标准输入和标准输出

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,文件描述符分别是 0、1、2。

当运行命令时,命令启动的进程就会自动打开这三个保留的文件描述符。 如下图 在这里插入图片描述

在 Linux中 一切都是文件,包括输入和输出,其中:

0 表示标准输入,对应的文件描述符是 /proc/self/fd/0。1 表示标准输出,对应的文件描述符是 /proc/self/fd/1。2 标准错误,对应的文件描述符是 /proc/self/fd/2。

可以使用这些文件描述符来控制命令程序或者脚本的输入和输出。

我们常用的命令2>&1的含义是标准错误重新定向到标准输出,即指将标准输出、标准错误指定为同一输出路径。

   

二、重定向 1. 定义

shell在执行命令时可以修改标准输入的输入源和标准输出的目标位置,这个功能称为重定向。

在重定向时,n> file这种语法表示将文件描述符n的输出重定向到file文件。如果省略n,文件描述符则默认为1,因此>会对标准输出重定向。

在这里插入图片描述  

2. 输出的重定向

标准输出的目标位置通常指向的是终端屏幕。可以使用 > 符号修改标准输出的目标位置。  

例子1: 比如下面的示例就会将ps命令的输出重定向到result.txt文件。

$ ps > result.txt ←----- 由于已经重定向到 result.txt 文件,所以屏幕上不会输出任何内容 $ cat result.txt PID TTY TIME CMD 10745 pts/0 00:00:00 bash 10873 pts/0 00:00:00 ps

  例子2: echo命令的执行结果将被重定向到hello.txt文件。

$ echo hello > hello.txt $ cat hello.txt hello

注:

只要命令能将执行结果输出到标准输出,就可以实现重定向。

 

3. 对标准错误输出重定向

要想对标准错误输出的错误信息进行重定向,可以使用2>符号。

例子:ls命令的标准错误输出会被重定向到error.txt文件。

$ ls /xxx 2> error.txt $ cat error.txt ls: 无法访问'/xxx': 没有那个文件或目录

 

4. 输入的重定向

对标准输入也可以像对标准输出一样进行重定向操作。

以tr命令为例: tr命令是用于替换字符串的命令,其语法为tr 待替换的字符串 被替换后的字符串。

tr b B abc' aBc' my book

从键盘输入一些内容后,tr命令会以行为单位替换输入内容,并输出替换后的结果。要想退出tr命令,可以使用Ctrl + D结束输入状态。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有